package com.jsgt.greekfire.common.widget

import android.content.Context
import android.text.InputFilter
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatEditText
import java.util.regex.Pattern


/**
 * author fhx
 * create time 2020/5/11 18:11
 **/
class SecurityEditView constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) :
    AppCompatEditText(context, attrs, defStyleAttr) {
    constructor(context: Context, attrs: AttributeSet?) : this(
        context,
        attrs,
        android.R.attr.editTextStyle
    )

    constructor(context: Context) : this(context, null, android.R.attr.editTextStyle)

    init {

        val lengthFilter =
            InputFilter { source, start, end, dest, dstart, dend ->
                // source:当前输入的字符
                // start:输入字符的开始位置
                // end:输入字符的结束位置
                // dest：当前已显示的内容
                // dstart:当前光标开始位置
                // dent:当前光标结束位置
                if (!isPasswordChar(source.toString())) {
                    return@InputFilter ""
                }
                null
            }
        filters = arrayOf(lengthFilter, InputFilter.LengthFilter(18))
    }

    //是否是密码字符
    private fun isPasswordChar(str: String):Boolean{
        val p = Pattern.compile("[a-zA-Z0-9]")
        val m = p.matcher(str)
        return m.find()
    }

    /**
     * 判断字符串中是否包含中文
     * @param str
     * 待校验字符串
     * @return 是否为中文
     * @warn 不能校验是否为中文标点符号
     */
    private fun isContainChinese(str: String?): Boolean {
        val p = Pattern.compile("[\u4e00-\u9fa5]")
        val m = p.matcher(str)
        return m.find()
    }
}